import { defineConfig } from 'vite'
import path from 'path'
import vue from '@vitejs/plugin-vue'
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
import viteCompression from 'vite-plugin-compression'

const pathSrc = path.resolve(__dirname, 'src')

export default defineConfig({
  plugins: [
    vue(),
    AutoImport({
      // 自动导入 Vue 相关函数，如：ref, reactive, toRef 等
      imports: ['vue'],
      // 自动导入 Element Plus 相关函数，如：ElMessage, ElMessageBox... (带样式)
      resolvers: [
        ElementPlusResolver(),
      ],
      dts: false,
    }),
    Components({
      resolvers: [
        // 自动导入 Element Plus 组件
        ElementPlusResolver(),
      ],
      dts: false,
    }),
    viteCompression({
      verbose: true,          // 控制台输出压缩详情
      disable: false,         // 启用压缩
      deleteOriginFile: false,// 保留原始文件
      threshold: 10240,       // 仅压缩大于 10KB 的文件
      algorithm: 'gzip',      // 压缩算法（可选 'brotli'）
      ext: '.gz',             // 生成文件后缀
      compressionOptions: {   // 高级压缩参数
        level: 9,             // 压缩级别（1-9，9为最高）
        memLevel: 8           // 内存使用级别（1-9）
      }
    })
  ],
  server:{
    port: 5260,
    host: '0.0.0.0',
    allowedHosts: true,
    cors: true,
    proxy: {
      // https://cn.vitejs.dev/config/#server-proxy
      '/api': {
        target: 'http://localhost:5261',
        changeOrigin: true,
        rewrite: (p) => p.replace(/^\/api/, '')
      }
    }
  },
  resolve: {
    alias: {
      '@': pathSrc
    }
  },
  build: {
    outDir: 'dist', // 输出目录（默认值）
    assetsDir: 'static', // 资源目录（默认值，相对于 outDir）
    rollupOptions: { /* 控制代码分割策略 */
      output: {
        chunkFileNames: 'static/js/[name]-[hash].js',
        entryFileNames: 'static/js/[name]-[hash].js',
        assetFileNames: 'static/[ext]/[name]-[hash].[ext]',
      }
    }
    // 其他配置...
  }
})